//
//  BAWelcomeViewController.swift
//  BAweibo
//
//  Created by baggio on 2017/8/14.
//  Copyright © 2017年 baggio. All rights reserved.
//

import UIKit
import SnapKit
import SDWebImage

class BAWelcomeViewController: UIViewController {
    
    override func loadView() {
        view=bgImageView
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        setUpUI()
    }
    
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        //头像阻尼动画(弹簧动画)
        setUpHeadImageViewAnimation()
        
    }
    
    
    //头像阻尼动画(弹簧动画)
    private func setUpHeadImageViewAnimation(){
        
        
        //更新头像约束，使用 snp.updateConstraints 的时候，前后参照物不能改变
        //搬到 animations: {} 里面
        //        self.headImageView.snp.updateConstraints { (m) in
        //            m.top.equalTo(self.view).offset(100)
        //        }
        
        /*
         设置动画
         UIView.animate(withDuration: <#T##TimeInterval#>, //动画时长
         delay: <#T##TimeInterval#>,//延迟时间
         usingSpringWithDamping: <#T##CGFloat#>,//阻尼系数 0-1 （阻尼系数越小，弹性效果越好）
         initialSpringVelocity: <#T##CGFloat#>,//起始加速度
         options: <#T##UIViewAnimationOptions#>,//[]
         animations: <#T##() -> Void#>,//动画
         completion: <#T##((Bool) -> Void)?##((Bool) -> Void)?##(Bool) -> Void#>)//动画完成
         */
        
        UIView.animate(withDuration: 2, delay: 0.5, usingSpringWithDamping: 0.4, initialSpringVelocity: 0, options: [], animations: {
            
            //更新头像约束，使用 snp.updateConstraints 的时候，前后参照物不能改变
            self.headImageView.snp.updateConstraints { (m) in
                m.top.equalTo(self.view).offset(100)
            }
            
            //使用约束和 UIView 动画配合，需要强行刷新控制器（因为动画是基于 frame 的更改的，所以要刷新布局）
            self.view.layoutIfNeeded()
        }) { (_) in
            //完成以后，显示 messageLabel
            //self.messageLabel.alpha=1
            
            //这里再使用一次动画
            UIView.animate(withDuration: 1, animations: {
                self.messageLabel.alpha = 1
            }, completion: { (_) in
                //发送切换根控制器的通知 -> BAMainViewController
                NotificationCenter.default.post(name: BA_NOTIFICATION_SWITCH_ROOT_VC, object: "fromWelcomeVC2MainVC")
            })
        }
    }
    
    
    func setUpUI(){
        view.addSubview(headImageView)
        view.addSubview(messageLabel)
        
        headImageView.snp.makeConstraints { (m) in
            m.size.equalTo(CGSize(width: 90, height: 90))
            m.centerX.equalTo(view)
            m.top.equalTo(view).offset(400)
        }
        
        messageLabel.snp.makeConstraints { (m) in
            m.centerX.equalTo(view)
            m.top.equalTo(headImageView.snp.bottom).offset(16)
        }
        
        //使用 SDWebImage 获取网络图片，不是在 headImageView 懒加载里写的
        //        headImageView.sd_setImage(with: URL(string: (BAOAuthViewModel.share.oAuthModel?.avatar_large) ?? ""), placeholderImage: UIImage(named: "avatar_default"))
        
        //使用扩展 SDWebImage 中的 sd_setImage 方法 ba_sd_setImage
        headImageView.ba_sd_setImage(urlString: BAOAuthViewModel.share.oAuthModel?.avatar_large, placeholderImageName: "avatar_default")
    }
    
    private lazy var bgImageView:UIImageView=UIImageView(imgName: "ad_background")
    
    private lazy var headImageView:UIImageView = {
        let img=UIImageView(imgName: "avatar_default")// 先写死一个图片
        img.layer.cornerRadius=90*0.5
        //超出部分截取掉
        img.clipsToBounds=true
        //控件边缘颜色
        img.layer.borderColor=BA_COLOR_APP_THEME.cgColor
        //控件边缘宽度
        img.layer.borderWidth=1.5
        return img
    }()
    
    //改用扩展后的 UILabel 的便利构造函数
    //    private lazy var messageLabel:UILabel={
    //        let label=UILabel()
    //        label.textAlignment = .center
    //        label.text="欢迎回来"
    //        label.textColor=BA_COLOR_APP_THEME
    //        label.font=UIFont.systemFont(ofSize: 18)
    //        return label
    //    }()
    
    //一开始 messageLabel 不显示（alpha: 0），完成动画后再显示（alpha: 1）
    private lazy var messageLabel:UILabel=UILabel(textAlignment: .center, text: "欢迎回来", textColor: BA_COLOR_APP_THEME, fontSize: 18,numberOfLines: 0, alpha: 0)
}
